package legumes.client.ui.widgets.form.item;

import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.form.validator.CustomValidator;
import com.smartgwt.client.widgets.form.validator.IsStringValidator;
import com.smartgwt.client.widgets.form.validator.LengthRangeValidator;
import com.smartgwt.client.widgets.form.validator.RegExpValidator;

public class EmailFormItem extends TextItem {

	public EmailFormItem(String name_, String title_){
		super(name_, title_);
		setShowTitle(true);
		setHint("<i>Exemple : 'jean-pierre.dupond@gmail.com'</i>");
		setWidth(200);
		setTextAlign(Alignment.LEFT);
		setValidateOnExit(true);
		setValidateOnChange(true);
		
		LengthRangeValidator lrv = new LengthRangeValidator();
        lrv.setMin(5);
        lrv.setMax(50);
        lrv.setErrorMessage("Saisir un mail entre 5 et 50 charact&egrave;res.");
        
        IsStringValidator isStringValidator = new IsStringValidator();
        isStringValidator.setErrorMessage("Veuillez saisir une chaines de caract&egrave;res.");

        CustomValidator cv = new CustomValidator(){

			@Override
			protected boolean condition(Object value) {
				return value instanceof String && 
				value != null &&
				((String)value).trim().length()>0;
			}
        	
        };
        cv.setErrorMessage("Veuillez saisir au moins un caractère.");

        RegExpValidator emailValidator = new RegExpValidator();
        emailValidator.setErrorMessage("Désolé nous ne reconnaissons pas cette adresse email. Essayer peut être un autre format comme \"pierre@provider.fr\".");
        emailValidator.setExpression("^([a-zA-Z0-9_.\\-+])+@(([a-zA-Z0-9\\-])+\\.)+[a-zA-Z0-9]{2,4}$");
        
        
        setValidators(isStringValidator, lrv, cv, emailValidator);
	}
	
	public EmailFormItem(String title_){
		this("EmailFormItem", title_);
	}
}
